home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 February: Tool Chest / Dev.CD Feb 94.toast / Tool Chest / Development Platforms / MPW Related / MPW Interfaces / CIncludes / OSUtils.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-17  |  9.4 KB  |  388 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        OSUtils.h
  3.  
  4.     Copyright:    © 1983-1993 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Version:    System 7.1 for ETO #11
  8.     Created:    Tuesday, March 30, 1993 18:00
  9.  
  10. */
  11.  
  12. #ifndef __OSUTILS__
  13. #define __OSUTILS__
  14.  
  15. #ifndef __TYPES__
  16. #include <Types.h>
  17. #endif
  18.  
  19. enum {
  20.  
  21.  useFree = 0,
  22.  useATalk = 1,
  23.  useAsync = 2,
  24.  useExtClk = 3,            /*Externally clocked*/
  25.  useMIDI = 4,
  26.  
  27. /**** Environs Equates ****/
  28.  curSysEnvVers = 2,        /*Updated to equal latest SysEnvirons version*/
  29.  
  30. /* Machine Types */
  31.  envMac = -1,
  32.  envXL = -2,
  33.  envMachUnknown = 0,
  34.  env512KE = 1,
  35.  envMacPlus = 2,
  36.  envSE = 3,
  37.  envMacII = 4,
  38.  envMacIIx = 5,
  39.  envMacIIcx = 6,
  40.  envSE30 = 7,
  41.  envPortable = 8,
  42.  envMacIIci = 9,
  43.  envMacIIfx = 11,
  44.  
  45. /* CPU types */
  46.  envCPUUnknown = 0
  47. };
  48. enum {
  49.  env68000 = 1,
  50.  env68010 = 2,
  51.  env68020 = 3,
  52.  env68030 = 4,
  53.  env68040 = 5,
  54.  
  55. /* Keyboard types */
  56.  envUnknownKbd = 0,
  57.  envMacKbd = 1,
  58.  envMacAndPad = 2,
  59.  envMacPlusKbd = 3,
  60.  envAExtendKbd = 4,
  61.  envStandADBKbd = 5,
  62.  envPrtblADBKbd = 6,
  63.  envPrtblISOKbd = 7,
  64.  envStdISOADBKbd = 8,
  65.  envExtISOADBKbd = 9,
  66.  false32b = 0,            /*24 bit addressing error*/
  67.  true32b = 1,            /*32 bit addressing error*/
  68.  
  69. /* result types for RelString Call */
  70.  sortsBefore = -1,        /*first string < second string*/
  71.  sortsEqual = 0,        /*first string = second string*/
  72.  sortsAfter = 1            /*first string > second string*/
  73. };
  74.  
  75. enum {
  76.  
  77. /* Toggle results */
  78.  toggleUndefined = 0,
  79.  toggleOK = 1,
  80.  toggleBadField = 2,
  81.  toggleBadDelta = 3,
  82.  toggleBadChar = 4,
  83.  toggleUnknown = 5,
  84.  toggleBadNum = 6,
  85.  toggleOutOfRange = 7,                /*synonym for toggleErr3*/
  86.  toggleErr3 = 7,
  87.  toggleErr4 = 8,
  88.  toggleErr5 = 9,
  89.  
  90. /* Date equates */
  91.  smallDateBit = 31,                    /*Restrict valid date/time to range of Time global*/
  92.  togChar12HourBit = 30,                /*If toggling hour by char, accept hours 1..12 only*/
  93.  togCharZCycleBit = 29,                /*Modifier for togChar12HourBit: accept hours 0..11 only*/
  94.  togDelta12HourBit = 28,            /*If toggling hour up/down, restrict to 12-hour range (am/pm)*/
  95.  genCdevRangeBit = 27,                /*Restrict date/time to range used by genl CDEV*/
  96.  validDateFields = -1,
  97.  maxDateField = 10,
  98.  
  99.  eraMask = 0x0001,
  100.  yearMask = 0x0002,
  101.  monthMask = 0x0004,
  102.  dayMask = 0x0008,
  103.  hourMask = 0x0010,
  104.  minuteMask = 0x0020,
  105.  secondMask = 0x0040,
  106.  dayOfWeekMask = 0x0080,
  107.  dayOfYearMask = 0x0100,
  108.  weekOfYearMask = 0x0200,
  109.  pmMask = 0x0400,
  110.  dateStdMask = 0x007F                /*default for ValidDate flags and ToggleDate TogglePB.togFlags*/
  111.  
  112. };
  113.  
  114. enum {eraField,yearField,monthField,dayField,hourField,minuteField,secondField,
  115.  dayOfWeekField,dayOfYearField,weekOfYearField,pmField,res1Field,res2Field,
  116.  res3Field};
  117. typedef unsigned char LongDateField;
  118.  
  119. enum {dummyType,vType,ioQType,drvQType,evType,fsQType,sIQType,dtQType};
  120. typedef unsigned short QTypes;
  121.  
  122. enum {OSTrap,ToolTrap};
  123. typedef unsigned char TrapType;
  124.  
  125.  
  126. struct SysParmType {
  127.  char valid;
  128.  char aTalkA;
  129.  char aTalkB;
  130.  char config;
  131.  short portA;
  132.  short portB;
  133.  long alarm;
  134.  short font;
  135.  short kbdPrint;
  136.  short volClik;
  137.  short misc;
  138. };
  139.  
  140. typedef struct SysParmType SysParmType;
  141. typedef SysParmType *SysPPtr;
  142.  
  143. struct QElem {
  144.  struct QElem *qLink;
  145.  short qType;
  146.  short qData[1];
  147. };
  148.  
  149. typedef struct QElem QElem;
  150. typedef QElem *QElemPtr;
  151.  
  152. struct QHdr {
  153.  short qFlags;
  154.  QElemPtr qHead;
  155.  QElemPtr qTail;
  156. };
  157.  
  158. typedef struct QHdr QHdr;
  159. typedef QHdr *QHdrPtr;
  160.  
  161. struct SysEnvRec {
  162.  short environsVersion;
  163.  short machineType;
  164.  short systemVersion;
  165.  short processor;
  166.  Boolean hasFPU;
  167.  Boolean hasColorQD;
  168.  short keyBoardType;
  169.  short atDrvrVersNum;
  170.  short sysVRefNum;
  171. };
  172.  
  173. typedef struct SysEnvRec SysEnvRec;
  174.  
  175. struct MachineLocation {
  176.  Fract latitude;
  177.  Fract longitude;
  178.  union{
  179.   char dlsDelta;                    /*signed byte; daylight savings delta*/
  180.   long gmtDelta;                    /*must mask - see documentation*/
  181.   }gmtFlags;
  182. };
  183.  
  184. typedef struct MachineLocation MachineLocation;
  185.  
  186. struct DateTimeRec {
  187.  short year;
  188.  short month;
  189.  short day;
  190.  short hour;
  191.  short minute;
  192.  short second;
  193.  short dayOfWeek;
  194. };
  195.  
  196. typedef struct DateTimeRec DateTimeRec;
  197.  
  198.  
  199. typedef comp LongDateTime;
  200.  
  201. union LongDateCvt {
  202.  comp c;
  203.  struct {
  204.   long lHigh;
  205.   long lLow;
  206.   } hl;
  207. };
  208.  
  209. typedef union LongDateCvt LongDateCvt;
  210.  
  211. union LongDateRec {
  212.  struct {
  213.   short era;
  214.   short year;
  215.   short month;
  216.   short day;
  217.   short hour;
  218.   short minute;
  219.   short second;
  220.   short dayOfWeek;
  221.   short dayOfYear;
  222.   short weekOfYear;
  223.   short pm;
  224.   short res1;
  225.   short res2;
  226.   short res3;
  227.   } ld;
  228.  short list[14];                    /*Index by LongDateField!*/
  229.  struct {
  230.   short eraAlt;
  231.   DateTimeRec oldDate;
  232.   } od;
  233. };
  234.  
  235. typedef union LongDateRec LongDateRec;
  236.  
  237.  
  238. typedef char DateDelta;
  239.  
  240. struct TogglePB {
  241.  long togFlags;                        /*caller normally sets low word to dateStdMask=$7F*/
  242.  ResType amChars;                    /*from 'itl0', but uppercased*/
  243.  ResType pmChars;                    /*from 'itl0', but uppercased*/
  244.  long reserved[4];
  245. };
  246.  
  247. typedef struct TogglePB TogglePB;
  248.  
  249. typedef short ToggleResults;
  250.  
  251. #ifdef __cplusplus
  252. extern "C" {
  253. #endif
  254.  
  255. pascal void LongDateToSeconds(const LongDateRec *lDate,LongDateTime *lSecs)
  256.  = {0x2F3C,0x8008,0xFFF2,0xA8B5}; 
  257. pascal void LongDate2Secs(const LongDateRec *lDate,LongDateTime *lSecs)
  258.  = {0x2F3C,0x8008,0xFFF2,0xA8B5}; 
  259. pascal void LongSecondsToDate(LongDateTime *lSecs,LongDateRec *lDate)
  260.  = {0x2F3C,0x8008,0xFFF0,0xA8B5}; 
  261. pascal void LongSecs2Date(LongDateTime *lSecs,LongDateRec *lDate)
  262.  = {0x2F3C,0x8008,0xFFF0,0xA8B5}; 
  263. pascal ToggleResults ToggleDate(LongDateTime *lSecs,LongDateField field,
  264.  DateDelta delta,short ch,const TogglePB *params)
  265.  = {0x2F3C,0x820E,0xFFEE,0xA8B5}; 
  266.  
  267. pascal short ValidDate(const LongDateRec *vDate,long flags,LongDateTime *newSecs)
  268.  = {0x2F3C,0x820C,0xFFE4,0xA8B5}; 
  269.  
  270. pascal Boolean IsMetric(void)
  271.  = {0x3F3C,0x0004,0xA9ED}; 
  272. pascal Boolean IUMetric(void)        /* obsolete name */
  273.  = {0x3F3C,0x0004,0xA9ED}; 
  274.  
  275.  
  276. #pragma parameter __D0 ReadDateTime(__A0)
  277. pascal OSErr ReadDateTime(unsigned long *time)
  278.  = 0xA039; 
  279. #pragma parameter GetDateTime(__A0)
  280. pascal void GetDateTime(unsigned long *secs)
  281.  = {0x20B8,0x020C}; 
  282. #pragma parameter __D0 SetDateTime(__D0)
  283. pascal OSErr SetDateTime(unsigned long time)
  284.  = 0xA03A; 
  285. #pragma parameter SetTime(__A0)
  286. pascal void SetTime(const DateTimeRec *d)
  287.  = {0xA9C7,0xA03A}; 
  288. #pragma parameter GetTime(__A0)
  289. pascal void GetTime(DateTimeRec *d)
  290.  = {0x2038,0x020C,0xA9C6}; 
  291. pascal void DateToSeconds(const DateTimeRec *d,unsigned long *secs); 
  292. pascal void Date2Secs(const DateTimeRec *d,unsigned long *secs); 
  293. #pragma parameter SecondsToDate(__D0,__A0)
  294. pascal void SecondsToDate(unsigned long secs,DateTimeRec *d)
  295.  = 0xA9C6; 
  296. #pragma parameter Secs2Date(__D0,__A0)
  297. pascal void Secs2Date(unsigned long secs,DateTimeRec *d)
  298.  = 0xA9C6; 
  299.  
  300. #define GetSysPPtr() ((SysPPtr) 0x01F8)
  301. pascal void SysBeep(short duration)
  302.  = 0xA9C8; 
  303. #pragma parameter __D0 DTInstall(__A0)
  304. pascal OSErr DTInstall(QElemPtr dtTaskPtr)
  305.  = 0xA082; 
  306. #define GetMMUMode() (* (char*) 0x0CB2)
  307. #pragma parameter SwapMMUMode(__A0)
  308. pascal void SwapMMUMode(char *mode)
  309.  = {0x1010,0xA05D,0x1080}; 
  310. #if SystemSixOrLater
  311. #pragma parameter __D0 SysEnvirons(__D0,__A0)
  312. pascal OSErr SysEnvirons(short versionRequested,SysEnvRec *theWorld)
  313.  = 0xA090; 
  314. #else
  315. pascal OSErr SysEnvirons(short versionRequested,SysEnvRec *theWorld);
  316. #endif
  317. #pragma parameter Delay(__A0,__A1)
  318. pascal void Delay(long numTicks,long *finalTicks)
  319.  = {0xA03B,0x2280}; 
  320. #pragma parameter __A0 GetTrapAddress(__D0)
  321. pascal long GetTrapAddress(short trapNum)
  322.  = 0xA146; 
  323. #pragma parameter SetTrapAddress(__A0,__D0)
  324. pascal void SetTrapAddress(long trapAddr,short trapNum)
  325.  = 0xA047; 
  326. pascal long NGetTrapAddress(short trapNum,TrapType tTyp); 
  327. pascal void NSetTrapAddress(long trapAddr,short trapNum,TrapType tTyp); 
  328. #pragma parameter __A0 GetOSTrapAddress(__D0)
  329. pascal long GetOSTrapAddress(short trapNum)
  330.  = 0xA346; 
  331. #pragma parameter SetOSTrapAddress(__A0,__D0)
  332. pascal void SetOSTrapAddress(long trapAddr,short trapNum)
  333.  = 0xA247; 
  334. #pragma parameter __A0 GetToolTrapAddress(__D0)
  335. pascal long GetToolTrapAddress(short trapNum)
  336.  = 0xA746; 
  337. #pragma parameter SetToolTrapAddress(__A0,__D0)
  338. pascal void SetToolTrapAddress(long trapAddr,short trapNum)
  339.  = 0xA647; 
  340. #pragma parameter __A0 GetToolboxTrapAddress(__D0)
  341. pascal long GetToolboxTrapAddress(short trapNum)
  342.  = 0xA746; 
  343. #pragma parameter SetToolboxTrapAddress(__A0,__D0)
  344. pascal void SetToolboxTrapAddress(long trapAddr,short trapNum)
  345.  = 0xA647; 
  346. pascal OSErr WriteParam(void); 
  347. #pragma parameter Enqueue(__A0,__A1)
  348. pascal void Enqueue(QElemPtr qElement,QHdrPtr qHeader)
  349.  = 0xA96F; 
  350. #pragma parameter __D0 Dequeue(__A0,__A1)
  351. pascal OSErr Dequeue(QElemPtr qElement,QHdrPtr qHeader)
  352.  = 0xA96E; 
  353. long SetCurrentA5(void)
  354.  = {0x200D,0x2A78,0x0904}; 
  355. #pragma parameter __D0 SetA5(__D0)
  356. long SetA5(long newA5)
  357.  = 0xC18D; 
  358. pascal void Environs(short *rom,short *machine); 
  359. pascal OSErr HandToHand(Handle *theHndl); 
  360. #pragma parameter __D0 PtrToXHand(__A0,__A1,__D0)
  361. pascal OSErr PtrToXHand(const void *srcPtr,Handle dstHndl,long size)
  362.  = 0xA9E2; 
  363. pascal OSErr PtrToHand(const void *srcPtr,Handle *dstHndl,long size); 
  364. #pragma parameter __D0 HandAndHand(__A0,__A1)
  365. pascal OSErr HandAndHand(Handle hand1,Handle hand2)
  366.  = 0xA9E4; 
  367. #pragma parameter __D0 PtrAndHand(__A0,__A1,__D0)
  368. pascal OSErr PtrAndHand(const void *ptr1,Handle hand2,long size)
  369.  = 0xA9EF; 
  370. #pragma parameter __D0 InitUtil
  371. pascal OSErr InitUtil(void)
  372.  = 0xA03F; 
  373. pascal Boolean SwapInstructionCache(Boolean cacheEnable); 
  374. pascal void FlushInstructionCache(void); 
  375. pascal Boolean SwapDataCache(Boolean cacheEnable); 
  376. pascal void FlushDataCache(void); 
  377.  
  378. pascal void ReadLocation(MachineLocation *loc)
  379.  = {0x205F,0x203C,0x000C,0x00E4,0xA051}; 
  380. pascal void WriteLocation(const MachineLocation *loc)
  381.  = {0x205F,0x203C,0x000C,0x00E4,0xA052}; 
  382.  
  383. #ifdef __cplusplus
  384. }
  385. #endif
  386.  
  387. #endif
  388.